
#pragma once

#include "atr/core/boolean.hpp"

namespace atr {

/**
 * @brief   Less (of sizes) comparator
 * @details On this level of abstraction we don't know what types First and
 *          Second will be. Because of that for know we can only compare it's
 *          sizes.
 *          For more custom you have (unfortunatelly) write it by your own.
 *
 * @tparam  First type to compare
 * @tparam  Second type to compare
 */
template <class First, class Second>
struct less
{
    /** Result type */
    using type = core::_bool<(sizeof (First) < sizeof (Second))>;
};

} // namespace atr